From 2d05896fe02beebb0a412b82e32602d132ef0148 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Tue, 15 Dec 2009 21:11:39 +0000 Subject: [PATCH] * net/tramp.el (tramp-echo-mark-marker-length): New defconst. (tramp-echo-mark, tramp-echoed-echo-mark-regexp): Use it. (tramp-check-for-regexp): Check also, when an echoing shell stops to echo sent commands. --- lisp/ChangeLog | 7 +++++++ lisp/net/tramp.el | 20 +++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 892f9e16afd..8a7c054c83f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2009-12-15 Michael Albinus + + * net/tramp.el (tramp-echo-mark-marker-length): New defconst. + (tramp-echo-mark, tramp-echoed-echo-mark-regexp): Use it. + (tramp-check-for-regexp): Check also, when an echoing shell stops + to echo sent commands. + 2009-12-14 Chong Yidong * Makefile.in: Revert last change (Bug#5191). diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 8bc010d29b2..6d3465c6a19 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -948,7 +948,12 @@ the info pages.") (defconst tramp-echo-mark-marker "_echo" "String marker to surround echoed commands.") -(defconst tramp-echo-mark "_echo\b\b\b\b\b" +(defconst tramp-echo-mark-marker-length (length tramp-echo-mark-marker) + "String length of `tramp-echo-mark-marker'.") + +(defconst tramp-echo-mark + (concat tramp-echo-mark-marker + (make-string tramp-echo-mark-marker-length ?\b)) "String mark to be transmitted around shell commands. Used to separate their echo from the output they produce. This will only be used if we cannot disable remote echo via stty. @@ -958,7 +963,9 @@ producing some echo which can later be detected by followed by an equal number of backspaces to erase them will usually suffice.") -(defconst tramp-echoed-echo-mark-regexp "_echo\\(\b\\( \b\\)?\\)\\{5\\}" +(defconst tramp-echoed-echo-mark-regexp + (format "%s\\(\b\\( \b\\)?\\)\\{%d\\}" + tramp-echo-mark-marker tramp-echo-mark-marker-length) "Regexp which matches `tramp-echo-mark' as it gets echoed by the remote shell.") @@ -6562,7 +6569,14 @@ Erase echoed commands if exists." (delete-region begin (point)) (goto-char (point-min))))) - (when (not (tramp-get-connection-property proc "check-remote-echo" nil)) + (when (or (not (tramp-get-connection-property proc "check-remote-echo" nil)) + ;; Sometimes, the echo string is suppressed on the remote side. + (not (string-equal + (substring-no-properties + tramp-echo-mark-marker + 0 (min tramp-echo-mark-marker-length (1- (point-max)))) + (buffer-substring-no-properties + 1 (min (1+ tramp-echo-mark-marker-length) (point-max)))))) ;; No echo to be handled, now we can look for the regexp. (goto-char (point-min)) (re-search-forward regexp nil t)))) -- 2.30.2